package me.learningandroid.ch2_6.fragmentdemo;

import android.os.Parcel;
import android.os.Parcelable;

// 模拟数据库存储的实体类
// Parcelable是让该类成为可序列化的类，让它可以作为`Intent`，`Fragment`入参.
public class ContactData implements Parcelable {
    public String name;
    public String phone;

    public ContactData(String name, String phone) {
        this.name = name;
        this.phone = phone;
    }

    //============= 以下是Parcelable 需要实现的，包含一个反序列化的构造函数，反序列化类和一个序列化方法。
    // 从Parcel反序列化的内部构造函数
    protected ContactData(Parcel in) {
        name = in.readString();
        phone = in.readString();
    }

    // 反序列化类
    public static final Creator<ContactData> CREATOR = new Creator<ContactData>() {
        @Override
        public ContactData createFromParcel(Parcel in) {
            return new ContactData(in);
        }

        @Override
        public ContactData[] newArray(int size) {
            return new ContactData[size];
        }
    };

    // 描述数据的位图，例如1代表数据中有文件描述符。
    // 一般来说用0即可。
    @Override
    public int describeContents() {
        return 0;
    }

    // 序列化方法
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeString(phone);
    }
}
